An application delivery controller (ADC) is a network device installed in a datacenter or multi-datacenter system to remove load from web servers in the datacenter. That is, an ADC typically distributes clients' requests between the web servers in a datacenter to balance the load. In a multi-datacenter system, an ADC is deployed in each datacenter to redirect clients' requests to a datacenter that would best serve such requests. Typically, the redirection decision is based on the location of the client from the datacenter. The ADC is a network device and, as such, includes computing resources, such as memory, one or more central processing units (CPU), storage, network connectivity, and so on.
A virtual machine (VM) is a software implementation of a computer that executes programs like a physical machine. The virtualization technology decouples the hardware from software, thus allows sharing of the underlying physical hardware resources between different virtual machines, each running its own operating system (guest). Thus, the virtualization, which is typically performed by a hypervisor, allows multiple operating systems to run concurrently on a host computer. The hypervisor presents the guest operating systems with a virtual operating platform and monitors the execution of the guest operating systems. Further, the hypervisor defines the allocation of resources (e.g., CPU power, memory, network bandwidth, etc.) for each guest operating system.
Virtualization of an ADC device can improve the performance of datacenters and reduce costs and overhead to the service providers. Similar to any other data center application, the ADC devices of different customers or applications can be consolidated as multiple virtual ADC instances running on a single hardware device. A straightforward approach to achieve this process would be to run a conventional hypervisor to control one or more ADC virtual machines. However, conventional hypervisors are primarily designed to support virtualization of general purpose computing devices, e.g., servers, and not network devices, such as ADCs. Network elements are measured by their high forwarding capacity and low latency, unlike server applications that are measured by their capacity of CPU intensive task processing. For example, conventional virtualization solutions cannot guarantee low latency when processing data packets, and further, their throughput and capacity is limited as only a small number of virtual machines can be executed on a physical computing device.
Therefore, the straightforward and conventional virtualization solutions are not optimized to support virtualization of ADCs.